#include <linux/slab.h>
#include <sound/core.h>
#include <sound/soc.h>
#include <sound/initval.h>
#include <linux/spi/spi.h>
#include <sound/asoundef.h>
#include <linux/delay.h>




static struct snd_soc_codec_driver soc_codec_device_si3050 = {
	.probe =	si3050_probe,
	.remove =	si3050_remove,
	.suspend = 	si3050_suspend,
	.resume = 	si3050_resume,
};


int si3050_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int freq, int dir)
{
	struct snd_soc_codec *codec = codec_dai->codec;
	struct device * dev = codec->dev;
//	struct si3050_data *priv = snd_soc_codec_get_drvdata(codec);

	dev_info(dev, "clk_id=%d, freq=%u, dir=%d\n", clk_id, freq, dir);
	return 0;
}

static int si3050_set_dai_fmt(struct snd_soc_dai *codec_dai,
			      unsigned int format)
{
	struct snd_soc_codec *codec = codec_dai->codec;
	struct device * dev = codec->dev;
	dev_info(dev, "%s format=%d\n", __func__, format);
	return 0;
}

static int si3050_hw_params(struct snd_pcm_substream *substream,
			    struct snd_pcm_hw_params *params,
			    struct snd_soc_dai *dai)
{
	struct snd_soc_pcm_runtime *rtd = substream->private_data;
	struct snd_soc_codec *codec = rtd->codec;
	truct device * dev = codec->dev;

	dev_info(dev, "%s\n", __func__);
	return 0;
}

static struct snd_soc_dai_ops si3050_dai_ops = {
	.hw_params = si3050_hw_params,
	.set_fmt = si3050_set_dai_fmt,
	.set_sysclk = si3050_set_dai_sysclk,
};




	ret = snd_soc_register_codec(&spi->dev,
			&soc_codec_device_si3050, &si3050_dai, 1);